La optimización se refiere a un proceso que busca mejorar la forma en que un programa utiliza
los recursos. La finalidad de la optimización de código es producir un código objeto lo más
eficiente posible.
Las optimizaciones se realizan en base al alcance ofrecido por el compilador.
La optimización puede tener como objetivo minimizar o maximizar alguna variable de rendimiento,
generalmente tiempo, espacio, procesador, etc.
Por ejemplo, puede buscar reducir el tiempo de ejecución de un programa, minimizar la cantidad
de memoria utilizada, o maximizar la utilización del procesador
En la asignatura de Lenguajes y Autómatas II, se desarrolla el análisis semántico, la generación de código,
la optimización y la generación del código objeto para obtener el funcionamiento de un compilador.
Es importante mencionar que la optimización va a depender del lenguaje de programación y es directamente
proporcional al tiempo de compilación; es decir, entre más optimización mayor tiempo de compilación.
Objetivo
Obtener código que se ejecuta más eficientemente según los criterios.
Tiempo de ejecución (optimización temporal).
Espacio de memoria utilizado (optimización espacial).
Funcionamiento
Revisa el código generado a varios niveles de abstracción y realiza las optimizaciones
aplicables al nivel de abstracción.
Representaciones de código intermedio de más a menos abstractas.
Árbol sintáctico abstracto: optimizar subexpresiones
redundantes, reducción de frecuencia, etc.
Tuplas o cuádruplas: optimizar en uso de los registros o de las
variables temporales.
Ensamblador/Código máquina: convertir saltos a saltos cortos,
reordenar instrucciones.
Representaciones de código para extraer información: grafos.
Condiciones que se han de cumplir
El código optimizado se ha de comportar igual que el código de partida excepto por ser más
rápido o ocupar menos espacio.
Hay que buscar transformaciones que no modifiquen el comportamiento del código según el
comportamiento definido para el lenguaje de programación. Ejemplo:
Si no se ha definido el orden de evaluación de los operandos la siguiente optimización
es válida.
B=2*A+(A=c*d);
Pasar a:
A=c*d;
B=A*3;
"TEMARIO UNIDAD III."
SUBTEMAS UNIDAD III
️ATENCIÓN:
PARA ACCESAR A LOS SUBTEMAS DE LA UNIDAD III, HAGA CLICK SOBRE EL
BOTÓN.
EJEMPLO: